Este driver permite a geração de um Metafile de Computação Gráfica, que é um padrão ANSI para o armazenamento persistente de primitivas gráficas. Geralmente, o arquivo possui uma extensão .CGM.
Um arquivo CGM é criado através de uma chamada à função cdCreateCanvas(CD_CGM, Data), que abre o arquivo e escreve seu cabeçalho. Depois disso, outras funções da biblioteca CD podem ser chamadas normalmente. O string de parâmetros Data tem o seguinte formato:
"filename [widthxheight] [resolution] [-t] -p[precision]" or in C style "%s %gx%g %g %s"
Apenas o parâmetro filename é obrigatório. Width e height são dados em milímetros (note o "x" em caixa baixa entre eles). Quando o tamanho do canvas não é especificado, a VDC Extension salva no arquivo é o retângulo envolvente da figura.. A resolução é o número de pixels por milímetros; o valor padrão é "3.8". Width, height e resolution são valores reais. O parâmetro -t modifica a codificação. Width, height e resolution são usados apenas por cdGetCanvasSize e na conversão pixels-milímetros. O parâmetro -p especifica a precisão de números inteiros, que pode ser 16 (default) ou 32.
Qualquer quantidade desses canvas pode existir simultaneamente. É importante notar que é necessário chamar a função cdKillCanvas para fechar o arquivo de forma apropriada.
Codificação - O formato CGM suporta codificação binária e de texto Apenas algumas aplicações interpretam a codificação de texto. Se não tiver certeza quanto a o que fazer, empregue a codificação binária, que é a padrão. Se preferir a codificação de texto, acrescente um string "-t" ao parâmetro Data.
Precisão das Coordenadas - As primitivas podem usar coordenadas em números reais. Porém, por questões de compatibilidade, utilizamos coordenadas em números inteiros.
CD_SCLMDECB
-
int(*cdcgmsclmdecb)(cdContext *driver, short scl_mde, short *drw_mode, double *factor)
- Executada para o comando CGM SCALE MODE. Retorna o modo de
escala CGM atual e permite que a callback modifique o modo de escala utilizado
pela função cdPlay (ABSTRACT=0,
METRIC=1). Caso você escolha o modo de escala METRIC ou ABSTRACT, porém o modo de
escala original é METRIC, você deve fornecer o fator de conversão em mm por pixels.CD_VDCEXTCB
-
int(*cdcgmvdcextcb)(cdContext *driver, short type, void *xmn, void *ymn, void *xmx, void
*ymx) - Executada para o comando CGM VDC EXTENT, dá como
retorno o VDC SPACE. CD_BEGPICTCB
-
int(*cdcgmbegpictcb)(cdContext *driver, char *pict) -
Executada para o comando BEGIN PICTURE, dá como retorno o string que descreve a
figura.CD_BEGPICTBCB
-
int(*cdcgmbegpictbcb)(cdContext *driver) - Executada para
o comando BEGIN PICTURE BODYCD_CGMBEGMTFCB
- int (*cdcgmbegmtfcb)(cdContext *driver, int *xmin, int *ymin,
int *xmax, int *ymax)
- Executada para o comando BEGIN METAFILE fornece os
limites de desenho da figura no arquivo.CD_DIAMOND
, CD_HOLLOW_DIAMOND
e CD_HOLLOW_BOX
são
equivalentes à CD_BOX
, CD_HOLLOW_CIRCLE
é equivalente à CD_CIRCLE
.